{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import datasets\n",
    "from tensorflow.keras import Input, Model\n",
    "from tensorflow.keras.layers import Flatten, Dense\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import time\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 28, 28)\n",
      "(60000,)\n",
      "(10000, 28, 28)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "(x_train, y_train), (x_test, y_test) = datasets.fashion_mnist.load_data()\n",
    "print(x_train.shape)\n",
    "print(y_train.shape)\n",
    "print(x_test.shape)\n",
    "print(y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.reshape(-1, 28*28)\n",
    "x_test = x_test.reshape(-1, 28*28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 784)\n",
      "(10000, 784)\n"
     ]
    }
   ],
   "source": [
    "print(x_train.shape)\n",
    "print(x_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#归一化处理\n",
    "x_train = x_train/255.0\n",
    "x_test = x_test/255.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型搭建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 输入层inputx\n",
    "inputs = Input(shape=(28*28), name='input')\n",
    "# 隐层dense  \n",
    "#•第一层隐层设置：神经元个数256，初始化方法为glorot_normal，激活函数为tanh\n",
    "x = Dense(units=256,activation='tanh',kernel_initializer='glorot_normal', name='dense_0')(inputs)\n",
    "#•第二层隐层设置：神经元个数128，初始化方法为glorot_normal，激活函数为tanh\n",
    "x = Dense(units=128, activation='tanh',kernel_initializer='glorot_normal',name='dense_1')(x)\n",
    "# 输出层\n",
    "outputs = Dense(units=10, activation='softmax', name='logit')(x)\n",
    "# 设置模型的inputs和outputsin\n",
    "model = Model(inputs=inputs, outputs=outputs)\n",
    "# 设置损失函数loss、优化器optimizer、评价标准metrics\n",
    "model.compile(loss='sparse_categorical_crossentropy',\n",
    "              optimizer=\"sgd\", metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"functional_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input (InputLayer)           [(None, 784)]             0         \n",
      "_________________________________________________________________\n",
      "dense_0 (Dense)              (None, 256)               200960    \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 128)               32896     \n",
      "_________________________________________________________________\n",
      "logit (Dense)                (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 235,146\n",
      "Trainable params: 235,146\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/150\n",
      "1500/1500 - 3s - loss: 0.6829 - accuracy: 0.7771 - val_loss: 0.5169 - val_accuracy: 0.8221\n",
      "Epoch 2/150\n",
      "1500/1500 - 2s - loss: 0.4797 - accuracy: 0.8336 - val_loss: 0.4575 - val_accuracy: 0.8324\n",
      "Epoch 3/150\n",
      "1500/1500 - 3s - loss: 0.4397 - accuracy: 0.8448 - val_loss: 0.4299 - val_accuracy: 0.8447\n",
      "Epoch 4/150\n",
      "1500/1500 - 2s - loss: 0.4169 - accuracy: 0.8523 - val_loss: 0.4192 - val_accuracy: 0.8451\n",
      "Epoch 5/150\n",
      "1500/1500 - 2s - loss: 0.4006 - accuracy: 0.8584 - val_loss: 0.4099 - val_accuracy: 0.8529\n",
      "Epoch 6/150\n",
      "1500/1500 - 2s - loss: 0.3884 - accuracy: 0.8624 - val_loss: 0.3975 - val_accuracy: 0.8568\n",
      "Epoch 7/150\n",
      "1500/1500 - 3s - loss: 0.3777 - accuracy: 0.8655 - val_loss: 0.3900 - val_accuracy: 0.8591\n",
      "Epoch 8/150\n",
      "1500/1500 - 3s - loss: 0.3682 - accuracy: 0.8688 - val_loss: 0.3830 - val_accuracy: 0.8608\n",
      "Epoch 9/150\n",
      "1500/1500 - 3s - loss: 0.3600 - accuracy: 0.8722 - val_loss: 0.3792 - val_accuracy: 0.8608\n",
      "Epoch 10/150\n",
      "1500/1500 - 3s - loss: 0.3528 - accuracy: 0.8738 - val_loss: 0.3756 - val_accuracy: 0.8639\n",
      "Epoch 11/150\n",
      "1500/1500 - 3s - loss: 0.3462 - accuracy: 0.8760 - val_loss: 0.3745 - val_accuracy: 0.8656\n",
      "Epoch 12/150\n",
      "1500/1500 - 3s - loss: 0.3401 - accuracy: 0.8786 - val_loss: 0.3684 - val_accuracy: 0.8661\n",
      "Epoch 13/150\n",
      "1500/1500 - 3s - loss: 0.3345 - accuracy: 0.8797 - val_loss: 0.3594 - val_accuracy: 0.8708\n",
      "Epoch 14/150\n",
      "1500/1500 - 3s - loss: 0.3291 - accuracy: 0.8823 - val_loss: 0.3645 - val_accuracy: 0.8698\n",
      "Epoch 15/150\n",
      "1500/1500 - 3s - loss: 0.3240 - accuracy: 0.8847 - val_loss: 0.3643 - val_accuracy: 0.8677\n",
      "Epoch 16/150\n",
      "1500/1500 - 3s - loss: 0.3188 - accuracy: 0.8859 - val_loss: 0.3470 - val_accuracy: 0.8721\n",
      "Epoch 17/150\n",
      "1500/1500 - 3s - loss: 0.3144 - accuracy: 0.8876 - val_loss: 0.3441 - val_accuracy: 0.8767\n",
      "Epoch 18/150\n",
      "1500/1500 - 3s - loss: 0.3093 - accuracy: 0.8888 - val_loss: 0.3411 - val_accuracy: 0.8754\n",
      "Epoch 19/150\n",
      "1500/1500 - 3s - loss: 0.3060 - accuracy: 0.8900 - val_loss: 0.3643 - val_accuracy: 0.8661\n",
      "Epoch 20/150\n",
      "1500/1500 - 3s - loss: 0.3016 - accuracy: 0.8910 - val_loss: 0.3402 - val_accuracy: 0.8768\n",
      "Epoch 21/150\n",
      "1500/1500 - 4s - loss: 0.2981 - accuracy: 0.8922 - val_loss: 0.3363 - val_accuracy: 0.8770\n",
      "Epoch 22/150\n",
      "1500/1500 - 3s - loss: 0.2928 - accuracy: 0.8937 - val_loss: 0.3320 - val_accuracy: 0.8790\n",
      "Epoch 23/150\n",
      "1500/1500 - 3s - loss: 0.2899 - accuracy: 0.8951 - val_loss: 0.3374 - val_accuracy: 0.8774\n",
      "Epoch 24/150\n",
      "1500/1500 - 4s - loss: 0.2865 - accuracy: 0.8963 - val_loss: 0.3368 - val_accuracy: 0.8763\n",
      "Epoch 25/150\n",
      "1500/1500 - 3s - loss: 0.2834 - accuracy: 0.8970 - val_loss: 0.3268 - val_accuracy: 0.8817\n",
      "Epoch 26/150\n",
      "1500/1500 - 4s - loss: 0.2791 - accuracy: 0.8989 - val_loss: 0.3276 - val_accuracy: 0.8813\n",
      "Epoch 27/150\n",
      "1500/1500 - 3s - loss: 0.2765 - accuracy: 0.8997 - val_loss: 0.3226 - val_accuracy: 0.8820\n",
      "Epoch 28/150\n",
      "1500/1500 - 4s - loss: 0.2731 - accuracy: 0.9008 - val_loss: 0.3263 - val_accuracy: 0.8823\n",
      "Epoch 29/150\n",
      "1500/1500 - 3s - loss: 0.2693 - accuracy: 0.9011 - val_loss: 0.3288 - val_accuracy: 0.8799\n",
      "Epoch 30/150\n",
      "1500/1500 - 3s - loss: 0.2664 - accuracy: 0.9037 - val_loss: 0.3216 - val_accuracy: 0.8831\n",
      "Epoch 31/150\n",
      "1500/1500 - 3s - loss: 0.2630 - accuracy: 0.9038 - val_loss: 0.3262 - val_accuracy: 0.8804\n",
      "Epoch 32/150\n",
      "1500/1500 - 3s - loss: 0.2603 - accuracy: 0.9061 - val_loss: 0.3200 - val_accuracy: 0.8837\n",
      "Epoch 33/150\n",
      "1500/1500 - 3s - loss: 0.2568 - accuracy: 0.9062 - val_loss: 0.3301 - val_accuracy: 0.8797\n",
      "Epoch 34/150\n",
      "1500/1500 - 3s - loss: 0.2544 - accuracy: 0.9075 - val_loss: 0.3172 - val_accuracy: 0.8864\n",
      "Epoch 35/150\n",
      "1500/1500 - 3s - loss: 0.2508 - accuracy: 0.9091 - val_loss: 0.3277 - val_accuracy: 0.8799\n",
      "Epoch 36/150\n",
      "1500/1500 - 4s - loss: 0.2490 - accuracy: 0.9098 - val_loss: 0.3183 - val_accuracy: 0.8842\n",
      "Epoch 37/150\n",
      "1500/1500 - 4s - loss: 0.2458 - accuracy: 0.9120 - val_loss: 0.3159 - val_accuracy: 0.8838\n",
      "Epoch 38/150\n",
      "1500/1500 - 3s - loss: 0.2433 - accuracy: 0.9123 - val_loss: 0.3339 - val_accuracy: 0.8804\n",
      "Epoch 39/150\n",
      "1500/1500 - 4s - loss: 0.2403 - accuracy: 0.9131 - val_loss: 0.3363 - val_accuracy: 0.8792\n",
      "Epoch 40/150\n",
      "1500/1500 - 4s - loss: 0.2383 - accuracy: 0.9136 - val_loss: 0.3149 - val_accuracy: 0.8852\n",
      "Epoch 41/150\n",
      "1500/1500 - 4s - loss: 0.2357 - accuracy: 0.9155 - val_loss: 0.3167 - val_accuracy: 0.8857\n",
      "Epoch 42/150\n",
      "1500/1500 - 4s - loss: 0.2337 - accuracy: 0.9151 - val_loss: 0.3094 - val_accuracy: 0.8873\n",
      "Epoch 43/150\n",
      "1500/1500 - 3s - loss: 0.2307 - accuracy: 0.9167 - val_loss: 0.3146 - val_accuracy: 0.8841\n",
      "Epoch 44/150\n",
      "1500/1500 - 4s - loss: 0.2277 - accuracy: 0.9173 - val_loss: 0.3095 - val_accuracy: 0.8892\n",
      "Epoch 45/150\n",
      "1500/1500 - 4s - loss: 0.2256 - accuracy: 0.9179 - val_loss: 0.3095 - val_accuracy: 0.8864\n",
      "Epoch 46/150\n",
      "1500/1500 - 4s - loss: 0.2232 - accuracy: 0.9197 - val_loss: 0.3061 - val_accuracy: 0.8897\n",
      "Epoch 47/150\n",
      "1500/1500 - 4s - loss: 0.2211 - accuracy: 0.9192 - val_loss: 0.3035 - val_accuracy: 0.8892\n",
      "Epoch 48/150\n",
      "1500/1500 - 4s - loss: 0.2192 - accuracy: 0.9214 - val_loss: 0.3040 - val_accuracy: 0.8903\n",
      "Epoch 49/150\n",
      "1500/1500 - 4s - loss: 0.2159 - accuracy: 0.9218 - val_loss: 0.3108 - val_accuracy: 0.8859\n",
      "Epoch 50/150\n",
      "1500/1500 - 4s - loss: 0.2138 - accuracy: 0.9226 - val_loss: 0.3123 - val_accuracy: 0.8882\n",
      "Epoch 51/150\n",
      "1500/1500 - 4s - loss: 0.2119 - accuracy: 0.9236 - val_loss: 0.3109 - val_accuracy: 0.8892\n",
      "Epoch 52/150\n",
      "1500/1500 - 4s - loss: 0.2116 - accuracy: 0.9235 - val_loss: 0.3044 - val_accuracy: 0.8898\n",
      "Epoch 53/150\n",
      "1500/1500 - 5s - loss: 0.2077 - accuracy: 0.9249 - val_loss: 0.3092 - val_accuracy: 0.8897\n",
      "Epoch 54/150\n",
      "1500/1500 - 5s - loss: 0.2052 - accuracy: 0.9260 - val_loss: 0.3082 - val_accuracy: 0.8904\n",
      "Epoch 55/150\n",
      "1500/1500 - 4s - loss: 0.2028 - accuracy: 0.9265 - val_loss: 0.3066 - val_accuracy: 0.8923\n",
      "Epoch 56/150\n",
      "1500/1500 - 4s - loss: 0.2007 - accuracy: 0.9279 - val_loss: 0.3074 - val_accuracy: 0.8907\n",
      "Epoch 57/150\n",
      "1500/1500 - 4s - loss: 0.2000 - accuracy: 0.9283 - val_loss: 0.3024 - val_accuracy: 0.8924\n",
      "Epoch 58/150\n",
      "1500/1500 - 4s - loss: 0.1968 - accuracy: 0.9296 - val_loss: 0.3045 - val_accuracy: 0.8912\n",
      "Epoch 59/150\n",
      "1500/1500 - 4s - loss: 0.1949 - accuracy: 0.9302 - val_loss: 0.3090 - val_accuracy: 0.8898\n",
      "Epoch 60/150\n",
      "1500/1500 - 4s - loss: 0.1937 - accuracy: 0.9308 - val_loss: 0.3037 - val_accuracy: 0.8907\n",
      "Epoch 61/150\n",
      "1500/1500 - 5s - loss: 0.1912 - accuracy: 0.9319 - val_loss: 0.3126 - val_accuracy: 0.8898\n",
      "Epoch 62/150\n",
      "1500/1500 - 5s - loss: 0.1907 - accuracy: 0.9315 - val_loss: 0.3243 - val_accuracy: 0.8852\n",
      "Epoch 63/150\n",
      "1500/1500 - 5s - loss: 0.1874 - accuracy: 0.9334 - val_loss: 0.3119 - val_accuracy: 0.8914\n",
      "Epoch 64/150\n",
      "1500/1500 - 5s - loss: 0.1857 - accuracy: 0.9336 - val_loss: 0.3131 - val_accuracy: 0.8897\n",
      "Epoch 65/150\n",
      "1500/1500 - 4s - loss: 0.1832 - accuracy: 0.9340 - val_loss: 0.3046 - val_accuracy: 0.8917\n",
      "Epoch 66/150\n",
      "1500/1500 - 5s - loss: 0.1821 - accuracy: 0.9352 - val_loss: 0.3343 - val_accuracy: 0.8834\n",
      "Epoch 67/150\n",
      "1500/1500 - 5s - loss: 0.1800 - accuracy: 0.9358 - val_loss: 0.3026 - val_accuracy: 0.8936\n",
      "Epoch 68/150\n",
      "1500/1500 - 5s - loss: 0.1785 - accuracy: 0.9361 - val_loss: 0.3180 - val_accuracy: 0.8881\n",
      "Epoch 69/150\n",
      "1500/1500 - 5s - loss: 0.1767 - accuracy: 0.9364 - val_loss: 0.3228 - val_accuracy: 0.8879\n",
      "Epoch 70/150\n",
      "1500/1500 - 6s - loss: 0.1745 - accuracy: 0.9385 - val_loss: 0.3193 - val_accuracy: 0.8899\n",
      "Epoch 71/150\n",
      "1500/1500 - 5s - loss: 0.1733 - accuracy: 0.9382 - val_loss: 0.3022 - val_accuracy: 0.8942\n",
      "Epoch 72/150\n",
      "1500/1500 - 6s - loss: 0.1708 - accuracy: 0.9400 - val_loss: 0.3194 - val_accuracy: 0.8899\n",
      "Epoch 73/150\n",
      "1500/1500 - 5s - loss: 0.1692 - accuracy: 0.9403 - val_loss: 0.3064 - val_accuracy: 0.8928\n",
      "Epoch 74/150\n",
      "1500/1500 - 5s - loss: 0.1679 - accuracy: 0.9403 - val_loss: 0.3287 - val_accuracy: 0.8856\n",
      "Epoch 75/150\n",
      "1500/1500 - 6s - loss: 0.1664 - accuracy: 0.9401 - val_loss: 0.3081 - val_accuracy: 0.8932\n",
      "Epoch 76/150\n",
      "1500/1500 - 6s - loss: 0.1644 - accuracy: 0.9408 - val_loss: 0.3100 - val_accuracy: 0.8918\n",
      "Epoch 77/150\n",
      "1500/1500 - 6s - loss: 0.1619 - accuracy: 0.9426 - val_loss: 0.3141 - val_accuracy: 0.8918\n",
      "Epoch 78/150\n",
      "1500/1500 - 10s - loss: 0.1611 - accuracy: 0.9429 - val_loss: 0.3061 - val_accuracy: 0.8951\n",
      "Epoch 79/150\n",
      "1500/1500 - 7s - loss: 0.1596 - accuracy: 0.9428 - val_loss: 0.3127 - val_accuracy: 0.8940\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 80/150\n",
      "1500/1500 - 6s - loss: 0.1584 - accuracy: 0.9436 - val_loss: 0.3206 - val_accuracy: 0.8905\n",
      "Epoch 81/150\n",
      "1500/1500 - 8s - loss: 0.1564 - accuracy: 0.9452 - val_loss: 0.3195 - val_accuracy: 0.8926\n",
      "Epoch 82/150\n",
      "1500/1500 - 8s - loss: 0.1554 - accuracy: 0.9451 - val_loss: 0.3188 - val_accuracy: 0.8930\n",
      "Epoch 83/150\n",
      "1500/1500 - 15s - loss: 0.1528 - accuracy: 0.9458 - val_loss: 0.3071 - val_accuracy: 0.8951\n",
      "Epoch 84/150\n",
      "1500/1500 - 18s - loss: 0.1505 - accuracy: 0.9466 - val_loss: 0.3314 - val_accuracy: 0.8870\n",
      "Epoch 85/150\n",
      "1500/1500 - 13s - loss: 0.1493 - accuracy: 0.9477 - val_loss: 0.3101 - val_accuracy: 0.8943\n",
      "Epoch 86/150\n",
      "1500/1500 - 15s - loss: 0.1483 - accuracy: 0.9481 - val_loss: 0.3093 - val_accuracy: 0.8938\n",
      "Epoch 87/150\n",
      "1500/1500 - 15s - loss: 0.1469 - accuracy: 0.9480 - val_loss: 0.3376 - val_accuracy: 0.8878\n",
      "Epoch 88/150\n",
      "1500/1500 - 11s - loss: 0.1450 - accuracy: 0.9491 - val_loss: 0.3393 - val_accuracy: 0.8857\n",
      "Epoch 89/150\n",
      "1500/1500 - 15s - loss: 0.1435 - accuracy: 0.9492 - val_loss: 0.3175 - val_accuracy: 0.8917\n",
      "Epoch 90/150\n",
      "1500/1500 - 11s - loss: 0.1414 - accuracy: 0.9510 - val_loss: 0.3437 - val_accuracy: 0.8836\n",
      "Epoch 91/150\n",
      "1500/1500 - 8s - loss: 0.1404 - accuracy: 0.9511 - val_loss: 0.3250 - val_accuracy: 0.8917\n",
      "Epoch 92/150\n",
      "1500/1500 - 9s - loss: 0.1390 - accuracy: 0.9513 - val_loss: 0.3159 - val_accuracy: 0.8931\n",
      "Epoch 93/150\n",
      "1500/1500 - 15s - loss: 0.1372 - accuracy: 0.9515 - val_loss: 0.3230 - val_accuracy: 0.8911\n",
      "Epoch 94/150\n",
      "1500/1500 - 13s - loss: 0.1359 - accuracy: 0.9524 - val_loss: 0.3398 - val_accuracy: 0.8882\n",
      "Epoch 95/150\n",
      "1500/1500 - 10s - loss: 0.1346 - accuracy: 0.9526 - val_loss: 0.3380 - val_accuracy: 0.8884\n",
      "Epoch 96/150\n",
      "1500/1500 - 10s - loss: 0.1323 - accuracy: 0.9538 - val_loss: 0.3366 - val_accuracy: 0.8890\n",
      "Epoch 97/150\n",
      "1500/1500 - 13s - loss: 0.1318 - accuracy: 0.9539 - val_loss: 0.3243 - val_accuracy: 0.8909\n",
      "Epoch 98/150\n",
      "1500/1500 - 12s - loss: 0.1303 - accuracy: 0.9548 - val_loss: 0.3238 - val_accuracy: 0.8927\n",
      "Epoch 99/150\n",
      "1500/1500 - 12s - loss: 0.1283 - accuracy: 0.9546 - val_loss: 0.3200 - val_accuracy: 0.8923\n",
      "Epoch 100/150\n",
      "1500/1500 - 11s - loss: 0.1269 - accuracy: 0.9557 - val_loss: 0.3398 - val_accuracy: 0.8875\n",
      "Epoch 101/150\n",
      "1500/1500 - 12s - loss: 0.1263 - accuracy: 0.9560 - val_loss: 0.3260 - val_accuracy: 0.8942\n",
      "Epoch 102/150\n",
      "1500/1500 - 12s - loss: 0.1244 - accuracy: 0.9567 - val_loss: 0.3353 - val_accuracy: 0.8909\n",
      "Epoch 103/150\n",
      "1500/1500 - 15s - loss: 0.1232 - accuracy: 0.9578 - val_loss: 0.3347 - val_accuracy: 0.8888\n",
      "Epoch 104/150\n",
      "1500/1500 - 10s - loss: 0.1214 - accuracy: 0.9585 - val_loss: 0.3259 - val_accuracy: 0.8929\n",
      "Epoch 105/150\n",
      "1500/1500 - 10s - loss: 0.1205 - accuracy: 0.9580 - val_loss: 0.3243 - val_accuracy: 0.8942\n",
      "Epoch 106/150\n",
      "1500/1500 - 10s - loss: 0.1194 - accuracy: 0.9581 - val_loss: 0.3257 - val_accuracy: 0.8929\n",
      "Epoch 107/150\n",
      "1500/1500 - 10s - loss: 0.1173 - accuracy: 0.9594 - val_loss: 0.3349 - val_accuracy: 0.8924\n",
      "Epoch 108/150\n",
      "1500/1500 - 11s - loss: 0.1165 - accuracy: 0.9597 - val_loss: 0.3264 - val_accuracy: 0.8931\n",
      "Epoch 109/150\n",
      "1500/1500 - 12s - loss: 0.1151 - accuracy: 0.9601 - val_loss: 0.3284 - val_accuracy: 0.8924\n",
      "Epoch 110/150\n",
      "1500/1500 - 13s - loss: 0.1135 - accuracy: 0.9606 - val_loss: 0.3300 - val_accuracy: 0.8942\n",
      "Epoch 111/150\n",
      "1500/1500 - 12s - loss: 0.1122 - accuracy: 0.9619 - val_loss: 0.3421 - val_accuracy: 0.8895\n",
      "Epoch 112/150\n",
      "1500/1500 - 12s - loss: 0.1112 - accuracy: 0.9614 - val_loss: 0.3508 - val_accuracy: 0.8878\n",
      "Epoch 113/150\n",
      "1500/1500 - 14s - loss: 0.1099 - accuracy: 0.9625 - val_loss: 0.3380 - val_accuracy: 0.8940\n",
      "Epoch 114/150\n",
      "1500/1500 - 13s - loss: 0.1095 - accuracy: 0.9620 - val_loss: 0.3333 - val_accuracy: 0.8938\n",
      "Epoch 115/150\n",
      "1500/1500 - 14s - loss: 0.1066 - accuracy: 0.9643 - val_loss: 0.3319 - val_accuracy: 0.8935\n",
      "Epoch 116/150\n",
      "1500/1500 - 11s - loss: 0.1056 - accuracy: 0.9639 - val_loss: 0.3431 - val_accuracy: 0.8913\n",
      "Epoch 117/150\n",
      "1500/1500 - 11s - loss: 0.1048 - accuracy: 0.9643 - val_loss: 0.3356 - val_accuracy: 0.8936\n",
      "Epoch 118/150\n",
      "1500/1500 - 9s - loss: 0.1030 - accuracy: 0.9653 - val_loss: 0.3496 - val_accuracy: 0.8908\n",
      "Epoch 119/150\n",
      "1500/1500 - 9s - loss: 0.1018 - accuracy: 0.9651 - val_loss: 0.3505 - val_accuracy: 0.8913\n",
      "Epoch 120/150\n",
      "1500/1500 - 9s - loss: 0.1010 - accuracy: 0.9663 - val_loss: 0.3471 - val_accuracy: 0.8920\n",
      "Epoch 121/150\n",
      "1500/1500 - 11s - loss: 0.0997 - accuracy: 0.9662 - val_loss: 0.3366 - val_accuracy: 0.8945\n",
      "Epoch 122/150\n",
      "1500/1500 - 10s - loss: 0.0989 - accuracy: 0.9666 - val_loss: 0.3467 - val_accuracy: 0.8918\n",
      "Epoch 123/150\n",
      "1500/1500 - 10s - loss: 0.0974 - accuracy: 0.9669 - val_loss: 0.3490 - val_accuracy: 0.8940\n",
      "Epoch 124/150\n",
      "1500/1500 - 12s - loss: 0.0959 - accuracy: 0.9681 - val_loss: 0.3465 - val_accuracy: 0.8913\n",
      "Epoch 125/150\n",
      "1500/1500 - 19s - loss: 0.0951 - accuracy: 0.9678 - val_loss: 0.3431 - val_accuracy: 0.8936\n",
      "Epoch 126/150\n",
      "1500/1500 - 14s - loss: 0.0938 - accuracy: 0.9680 - val_loss: 0.3474 - val_accuracy: 0.8916\n",
      "Epoch 127/150\n",
      "1500/1500 - 12s - loss: 0.0930 - accuracy: 0.9679 - val_loss: 0.3504 - val_accuracy: 0.8913\n",
      "Epoch 128/150\n",
      "1500/1500 - 16s - loss: 0.0915 - accuracy: 0.9694 - val_loss: 0.3411 - val_accuracy: 0.8934\n",
      "Epoch 129/150\n",
      "1500/1500 - 14s - loss: 0.0900 - accuracy: 0.9709 - val_loss: 0.3684 - val_accuracy: 0.8886\n",
      "Epoch 130/150\n",
      "1500/1500 - 12s - loss: 0.0893 - accuracy: 0.9700 - val_loss: 0.3526 - val_accuracy: 0.8920\n",
      "Epoch 131/150\n",
      "1500/1500 - 12s - loss: 0.0876 - accuracy: 0.9717 - val_loss: 0.3573 - val_accuracy: 0.8919\n",
      "Epoch 132/150\n",
      "1500/1500 - 13s - loss: 0.0869 - accuracy: 0.9712 - val_loss: 0.3547 - val_accuracy: 0.8912\n",
      "Epoch 133/150\n",
      "1500/1500 - 14s - loss: 0.0859 - accuracy: 0.9722 - val_loss: 0.3777 - val_accuracy: 0.8895\n",
      "Epoch 134/150\n",
      "1500/1500 - 18s - loss: 0.0851 - accuracy: 0.9723 - val_loss: 0.3623 - val_accuracy: 0.8897\n",
      "Epoch 135/150\n",
      "1500/1500 - 12s - loss: 0.0839 - accuracy: 0.9719 - val_loss: 0.3564 - val_accuracy: 0.8928\n",
      "Epoch 136/150\n",
      "1500/1500 - 13s - loss: 0.0822 - accuracy: 0.9735 - val_loss: 0.3571 - val_accuracy: 0.8925\n",
      "Epoch 137/150\n",
      "1500/1500 - 14s - loss: 0.0814 - accuracy: 0.9737 - val_loss: 0.3675 - val_accuracy: 0.8913\n",
      "Epoch 138/150\n",
      "1500/1500 - 13s - loss: 0.0803 - accuracy: 0.9730 - val_loss: 0.3721 - val_accuracy: 0.8895\n",
      "Epoch 139/150\n",
      "1500/1500 - 13s - loss: 0.0791 - accuracy: 0.9745 - val_loss: 0.3639 - val_accuracy: 0.8926\n",
      "Epoch 140/150\n",
      "1500/1500 - 13s - loss: 0.0783 - accuracy: 0.9746 - val_loss: 0.3697 - val_accuracy: 0.8911\n",
      "Epoch 141/150\n",
      "1500/1500 - 11s - loss: 0.0776 - accuracy: 0.9744 - val_loss: 0.3615 - val_accuracy: 0.8949\n",
      "Epoch 142/150\n",
      "1500/1500 - 12s - loss: 0.0765 - accuracy: 0.9751 - val_loss: 0.3703 - val_accuracy: 0.8907\n",
      "Epoch 143/150\n",
      "1500/1500 - 13s - loss: 0.0747 - accuracy: 0.9760 - val_loss: 0.3627 - val_accuracy: 0.8923\n",
      "Epoch 144/150\n",
      "1500/1500 - 13s - loss: 0.0751 - accuracy: 0.9756 - val_loss: 0.3785 - val_accuracy: 0.8897\n",
      "Epoch 145/150\n",
      "1500/1500 - 11s - loss: 0.0741 - accuracy: 0.9764 - val_loss: 0.3696 - val_accuracy: 0.8919\n",
      "Epoch 146/150\n",
      "1500/1500 - 11s - loss: 0.0723 - accuracy: 0.9770 - val_loss: 0.3948 - val_accuracy: 0.8892\n",
      "Epoch 147/150\n",
      "1500/1500 - 10s - loss: 0.0720 - accuracy: 0.9768 - val_loss: 0.3686 - val_accuracy: 0.8923\n",
      "Epoch 148/150\n",
      "1500/1500 - 10s - loss: 0.0706 - accuracy: 0.9775 - val_loss: 0.3770 - val_accuracy: 0.8882\n",
      "Epoch 149/150\n",
      "1500/1500 - 10s - loss: 0.0694 - accuracy: 0.9781 - val_loss: 0.3725 - val_accuracy: 0.8917\n",
      "Epoch 150/150\n",
      "1500/1500 - 10s - loss: 0.0691 - accuracy: 0.9784 - val_loss: 0.3860 - val_accuracy: 0.8909\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(x=x_train, y=y_train, batch_size=32,\n",
    "                    epochs=150, validation_split=0.2,verbose=2,\n",
    "                    shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画图查看history数据的变化趋势\n",
    "pd.DataFrame(history.history).plot(figsize=(8, 5))\n",
    "plt.grid(True)\n",
    "plt.xlabel('epoch')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "测试集评估结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "313/313 [==============================] - 6s 19ms/step - loss: 0.4124 - accuracy: 0.8832\n",
      "loss:  0.4123876094818115\n",
      "accuracy:  0.8831999897956848\n"
     ]
    }
   ],
   "source": [
    "loss, accuracy = model.evaluate(x_test, y_test)\n",
    "print('loss: ', loss)\n",
    "print('accuracy: ', accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
